package com.baofu.paycore.dal.mapper;

import com.baofu.paycore.dal.mapper.base.GenericMapper;
import com.baofu.paycore.dal.model.ClearDO;
import com.baofu.paycore.dal.model.ClearDiffDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 充值/提现Mapper
 *  <p>
 *      1.支付单号查询充值/提现主单信息
 *  </p>
 * User: xin deng  Date: 16/4/20 ProjectName: paycore Version: 1.0
 */
public interface ClearMapper extends GenericMapper<ClearDO> {

    /**
     * 支付单号查询充值/提现主单信息
     *
     * @param payNo     支付单号
     * @return          主单信息
     */
    ClearDO queryClearByPayNo(@Param("payNo") String payNo);


    /**
     * 根据订单号 流水号查询
     *
     * @param orderNo  订单号
     * @param requestBizNo 流水号
     * @param requestDate  请求日期
     * @return  充值提现对象
     */
    ClearDO queryByOrderNo(@Param("requestOrderNo") String orderNo,
                           @Param("requestBizNo") String requestBizNo,
                           @Param("requestDate") Date requestDate,
                           @Param("requestSystem") String requestSystem);

    /**
     * 分页查询充值/提现主单信息
     *
     * @param clearDO        查询参数
     * @param beginPage      开始行
     * @param endPage        结束行
     * @return               主单信息
     */
    List<ClearDO> queryClearByPage(@Param("bean") ClearDO clearDO, @Param("startDate") Date startDate, @Param("endDate") Date endDate,@Param("beginPage") Integer beginPage,
                                   @Param("endPage") Integer endPage);

    /**
     * 查询充值/提现主单信息总数
     *
     * @param clearDO        查询参数
     * @return               总数
     */
    int queryClearCount(@Param("bean") ClearDO clearDO,@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 分页查询充值/提现状态不一致订单
     *
     * @param bean          查询参数
     * @return              订单信息
     */
    List<ClearDiffDO> selectDiffStatusPage(@Param("bean") ClearDiffDO bean, @Param("beginPage") Integer beginPage,
                                       @Param("endPage") Integer endPage);

    /**
     * 查询充值/提现状态不一致订单数
     *
     * @param bean          查询参数
     * @return              总数
     */
    int selectDiffStatusCount(@Param("bean") ClearDiffDO bean);

    /**
     *
     * @param clearDO
     */
    void updateRetry(ClearDO clearDO);
}
